Curve smoothing without shrinking

ABSTRACT

A system generates a smoothed curve from a noisily drawn, multi-segmented curve by minimizing an energy function for a smoothed curve which fits between end-points of the drawn curve. The energy function has three components: a distortion component, a smoothing component and a shrink component. Numerical analysis methods are applied to evaluate the energy function and to identify the smoothed curve with the lowest energy. The transposed curve with the lowest energy value is selected as the smoothed curve.

CROSS-REFERENCE TO RELATED APPLICATIONS

[0001] This application is a continuation of U.S. application Ser. No.09/272,237, filed Mar. 18, 1999, which is incorporated herein byreference.

BACKGROUND

[0002] The invention relates to smoothing a drawn curve which isrendered by a computer.

[0003] The generation and maintenance of diagrams on a computertypically require computer aided design (CAD) tools and graphicsillustration software. In this process, users typically select one ormore objects and place each object on a drawing sheet displayed on amonitor or other suitable display device. Users can also edit andmanipulate these objects to achieve the desired appearance. To aid usersin performing their lay-out tasks to generate digital drawings, commonsymbols or objects such as squares, rectangles, circles, and ovals,among others, are typically provided for the user to select andmanipulate in creating at the design. Further, tools are also availableto assist the user in drafting straight lines and curvilinear segmentson the digital drawings.

[0004] The process of digitally drawing lines or curves is generally atrial and error process, especially when the curve is made up of anumber of corners or segments. Attempts at drawing curves with multiplecorners or segments generally result in curves which look noisy. Thenoise manifests itself as a sequence of jagged curves, each of which isdefined by begin and end points. In addition to being visuallyundesirable, the editing, displaying and saving of the sequence ofjagged curves can become quite complex. Thus, to improve the visualappearance and simplify the manipulation of noisy curves, it isdesirable to use smoothed versions in lieu of the noisy curves.

[0005] The noise can be eliminated by suitable smoothing operations onthe curves. To prevent distorting the shape of the curve, the smoothingoperations need to preserve corners of the drawn curve. Potentialdistortions include rounding of the corners or shrinking of the curvewhich can be easily perceived by human observers.

[0006] Generally, given a path or curve represented by a set of points,the path can be smoothed using several techniques. One technique calleda parametric technique fits one or more polynomials to a number of datapoints associated with the path. However, the parametric techniquerequires an a priori knowledge of an appropriate polynomials to use infitting the data points. Further, the parametric technique does notpreserve path corners.

[0007] A non-parametric technique can be used to reconstruct the curve.Generally, the non-parametric technique defines constraints thatencompass data fidelity and smoothness requirements. An energy functionis then defined in terms of the is fidelity and smoothness constraints,and a path is constructed to approximate the curve which minimizes theenergy function. The energy value is a composite of a number of factors,as follows:

E=D+λ ² *S

[0008] where D represents the distortion factor;

[0009] λ is the smoothness parameter and larger values of λ indicatinggreater smoothness; and

[0010] S is a smoothness function.

[0011] Additional factors or constraints can be imposed to achievecertain curve characteristics. One such constraint can be that theaverage departure of the transposed curve from the drawn curve be zero.This can be imposed as

Σ(x _(i) −u _(i))=0

Σ(y _(i) −v _(i))=0

[0012] Numerical methods are applied to evaluate the smoothing functionand to identify the transposed curve with the minimal energy which fitsbetween end-points of the drawn curve. The transposed curve with thelowest energy value E is selected as the smoothed curve.

SUMMARY

[0013] In general, the invention features a computer-implementedapparatus and method for smoothing a curve. The apparatus generates asmoothed curve from a noisily drawn, multi-segmented curve by minimizingan energy function for a transposed curve which fits between end-pointsof the drawn curve. The energy function has three components: adistortion component, a smoothing component and a shrink component.Numerical analysis methods are applied to evaluate the energy functionand to identify the transposed curve with the lowest energy. Thetransposed curve with the lowest energy value is selected as thesmoothed curve.

[0014] In one aspect, the apparatus generates a smoothed curve from adrawn curve by defining an energy constraint associated with the drawncurve, the energy constraint having a shrink component, a distortioncomponent, and a smoothness component; and generating the smoothed curveby minimizing the energy constraint.

[0015] Implementations of the invention include one or more of thefollowing. The energy constraint E may be expressed as:

E=D+λ ² *S+γ ² *B

[0016] where D is the distortion component, λ is a smoothness parameter,S is the smoothness component, γ is a shrink parameter and B is theshrink component. The shrink component may be defined as a function ofthe area enclosed between the drawn curve and the smoothed curve. Theshrink component may also be defined as the square of the area enclosedbetween the drawn curve and the smoothed curve. The drawn curve includesone or more points and the smoothed curve includes one or morecorresponding transposed points, further comprising approximating theenclosed area as the sum of areas enclosed between consecutive points onthe drawn curve and the corresponding transposed points. The areaenclosed between consecutive points on the drawn curve and thecorresponding transposed points is determined by:

Area_(i)=(x _(i+1) −x _(i) , y _(i+1) −y _(i))X(u _(i) −x _(i) , v _(i)−y _(i))

[0017] where (x₁, y₁) represent a point on the drawn curve, (u_(i), v₁)represent a point on the smoothed curve, and X is the vector crossproduct.

[0018] The area enclosed between consecutive points on the drawn curveand the corresponding transposed points may also be determined by:

Area_(i)=(x _(i+1) −x _(i) , y _(i+1) −y _(i))X((u _(i) −x _(i) , v _(i)−y _(i))+(u _(i+1) −x _(i+1) , v _(i+1) −y _(i+1))).

[0019] The energy constraint may be minimized using a gradient descentmethod.

[0020] In another aspect, a computer system characterizes a drawn curvedefined by a sequence of points on a two-dimensional space. The computerincludes a display, a user input device, and a processor coupled to thedisplay and the user input device. The processor has instructionsembedded therein to:

[0021] determine a distortion component D associated with the smoothedcurve in accordance with$D = {\sum\limits_{i = 0}^{N - 1}\left( {\left( {u_{i} - x_{i}} \right)^{2} + \left( {v_{i} - y_{i}} \right)^{2}} \right)}$

[0022] where (x₁, y₁) represent a point on the drawn curve (u₁, v₁)represent a point on the smoothed curve;

[0023] determine a smoothing component S associated with the smoothedcurve in accordance with:$S = {\sum\limits_{i = 0}^{N - 1}\sqrt{\left( {u_{i} - u_{i + 1}} \right)^{2} + \left( {v_{i} - v_{i + 1}} \right)^{2}}}$

[0024] determine a shrink component B for a systematic shift inaccordance with:$B = \left\lbrack {{\sum\limits_{i = 1}^{N - 1}\left( {{v_{i} \cdot l_{i}} + {u_{i} \cdot m_{i}}} \right)} + M} \right\rbrack^{2}$

[0025]  and

[0026] generate one or more smoothed curves, each curve having an energyvalue E expressed in terms of the distortion component, the smoothingcomponent and the shrink component in accordance with:

E=D+λ ^(2*) S+γ ² *B

[0027] where λ is the smoothness parameter, γ is the distortionparameter; and

[0028] select the smoothed curve with the minimum energy as the smoothedcurve.

[0029] In another aspect, computer-implemented method generates asmoothed curve from a drawn curve by defining a function for one or moresigned areas between the smoothed curve and the drawn curve; andgenerating the smoothed curve by applying the function as a constraint.

[0030] In another aspect, an apparatus for generating a smoothed curvefrom a drawn curve includes means for defining a function for one ormore signed areas between the smoothed curve and the drawn curve; andmeans for generating the smoothed curve by applying the function as aconstraint.

[0031] In yet another aspect, an apparatus for generating a smoothedcurve from a drawn curve, includes means for defining an energyconstraint associated with the drawn curve, the energy constraint havinga shrink component, a distortion component, and a smoothness component;and means for generating the smoothed curve by minimizing the energyconstraint.

[0032] Among the advantages of the invention are one or more of thefollowing. The resulting curve, as generated by the invention, is smoothwithout any noise artifacts when viewed. The smoothness of the resultingcurve is achieved without affecting the overall shape of the curve andwithout shrinking the curve's radius. The jaggedness of the curve isreduced without flattening the curve. The invention generates anaccurate characterization of the curve.

[0033] Other features and advantages of the invention will becomeapparent from the following description and from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

[0034]FIG. 1 shows an exemplary curve which is to be smoothed.

[0035]FIG. 2 shows a smoothed curve synthesized from the curve of FIG.1.

[0036]FIG. 3 illustrates an area between two successive points the curveof FIG. 2.

[0037]FIG. 4 is a flow chart of a process of smoothing the curve of FIG.1.

[0038]FIG. 5 illustrates a computer system suitable for use with theinvention.

DETAILED DESCRIPTION

[0039]FIG. 1 illustrates an exemplary drawn segment or curve 100 whichneeds to be smoothed. The drawn segment or curve 100 has a plurality ofpoints 102, 104, 106, 108, 110 and 112. The points 102-112 contain noiseor perturbation inadvertently introduced during the drawing of the curve100 by a user.

[0040] A synthesized or transposed smooth curve 120C has points 122,124, 126, 128, 130 and 132 which correspond to points 102 and 104, 106,108, 110 and 112, respectively. A region 140 is defined between points102, 122, 124, and 104, a region 142 is defined between points 104, 124,126, and 106, a region 144 is defined between points 106, 126, 128, and108, and a region 146 is defined between points 108, 128, 130, and 110,and a region 148 exists between points 110 130, 132, and 112,respectively.

[0041] In the example of FIG. 1, all smoothed points 122-132 exist onone side of the data points 102-112. This characteristic causes ashrinkage of the radius of the smoothed curve 120 to occur. Shrinkagetypically occurs in areas of high curvature where small shifts of allpoints on one side of the curve reduces the length of the curvesignificantly. The reason for this is that, though the smoothing processdata fidelity constraint requires the smoothed points 122-132 to beclose to the original points 102-112, the process for generating asmooth curve does not consider which side the point moves, but onlyconsiders a cumulative error measure. Since the error measure is small,if all points are moved by a small amount to one side, the smoothingprocess picks one of these curves as optimal and along the way generatesa smooth shrinked curves. For instance, if the original path is a circleof a radius ‘r’, the smoothed path is a circle with a radius which isless than ‘r’.

[0042]FIG. 2 shows the segment or curve 100 and a second smoothed curve121 which illustrate the operation of a process 200 (FIG. 4) ingenerating the smoothed curve 121 without shrinkage. The process 200adds an additional data fidelity constraint which imposes a penalty whensignificant points shift to one side. As in FIG. 1, original data points102-112 are used to generate corresponding points 122-132 on thesmoothed curve 121. The smoothed curve 121 straddles the original datapoints 102-112 such that points 122 and 124 are approximately centeredbetween points 102 and 104. Similarly, points 126 and 128 areapproximately centered between points 106 and 108, and so forth. Theprocess of FIG. 4 thus analyzes areas 150-158 enclosed between theoriginal curve 100 and the smoothed curve 121 and computes a net area,as discussed below. If the areas on either side of the original curve100 have opposite signs, then in case of a systematic shift (orshrinking) occurring during smoothing, areas 140-148 have the same signand hence the net area will be large number. In contrast, when thesmoothed data points 122-132 are evenly shifted, the areas on eitherside will even out and the net area will be close to zero.

[0043] The process 200 then determines a smoothing function defining thetransposed smoothed curve 121 located between the curve end points(points 160 and 164 of FIG. 3) of the drawn curve 100. During thesmoothing process, points representing perturbations are projectedcloser together by the smoothing function, effectively reducing theoverall length of the smoothed curve 121. As discussed in more detailbelow, by finding a smoothing function which minimizes the energyassociated with the curve 121 and by considering an error termassociated with a net area 168, the drawn curve 100 is transposed intothe smoothed curve 121 with points 162 and 166.

[0044] Referring now to FIG. 4, the process 200 for smoothing a curvewithout shrinking the curve is detailed. In general, the process 200attempts to find the transposed smoothed curve 120 from the originallydrawn curve 100. The smoothed curve 120 is associated with an energyvalue E which advantageously is related to the length of the transposedsmoothed curve 120, although other characterizations for E can be used.

[0045] The transposed curve 120 is a mapping of coordinate (x,y) foreach point I on the drawn curve 100 to coordinate (u,v) on the smoothedcurve 121, subject to a constraint that the energy value for thesmoothed curve 121 is minimized as the lowest energy E value. The energyvalue E is expressed as:

E=D+λ ² *S+γ ² *B

[0046] In step 202, the process 200 determines a distortion factor D tobe used in the analysis of E. The distortion factor D is a measure ofthe movement of the transposed curve from the original curve. A numberof characterization of D may be used, including characterizing D as afunction of the actual or the square of the difference in distancebetween the points on the curves.

[0047] In one embodiment, D is expressed as the sum of the square of thedistance between point I on the drawn curve and on the transposed curve,as follows:$D = {\sum\limits_{i = 0}^{N - 1}\left( {\left( {u_{i} - x_{i}} \right)^{2} + \left( {v_{i} - y_{i}} \right)^{2}} \right)}$

[0048] where D is a function of the sum of the square of the distancebetween point I on the drawn curve, represented as (x_(i),y_(i)) and onthe transposed curve, represented as (u_(i),v_(i)).

[0049] Alternatively, D may be expressed as the sum of the distancebetween point I on the drawn curve and on the transposed curve:$D = {\sum\limits_{i = 0}^{N - 1}\sqrt{\left( {u_{i} - x_{i}} \right)^{2} + \left( {v_{i} - y_{i}} \right)^{2}}}$

[0050] Other methods of characterizing D include expressing D as afunction of the area between the original curve and the transposedcurve, among others.

[0051] After the distortion factor D has been determined (step 202), themethod determines a smoothing factor S in step 204. S is expressed as asum of the square of the length of each segment on the transposed curveas follows:$S = {\sum\limits_{i = 0}^{N - 1}\left( {\left( {u_{i} - u_{i + 1}} \right)^{2} + \left( {v_{i} - v_{i + 1}} \right)^{2}} \right)}$

[0052] Alternatively, S may be expressed as a function of the length ofthe transposed curve:$S = {\sum\limits_{i = 0}^{N - 1}\sqrt{\left( {u_{i} - u_{i + 1}} \right)^{2} + \left( {v_{i} - v_{i + 1}} \right)^{2}}}$

[0053] Next, the method determines a smoothing parameter λ in step 206.λ is a user selectable value. If λ is set to 0, the smoothed curve willmimic the original drawn curve faithfully. If λ is set at infinity, thesmoothed curve will be a straight line joining the two end points.

[0054] In step 207, the process of FIG. 4 defines another data fidelityconstraint to prevent shrinking. This constraint is an expression of thearea enclosed between the drawn and the transposed smoothed curve. Thiscan be computed as the sum of the area enclosed between two successivepoints. The enclosed area is computed as follows:

Enclosed Area=Σ Signed area between two successive points

[0055] The exact expression for the enclosed area is quite complicatedand makes the energy minimization process intractable. Hence, anapproximation to the enclosed area is used. The main criteria imposed onthe approximation is that it be linear in (u_(i),v_(i)) such that theerror function is still computationally tractable. A few examples ofapproximating the net area is discussed below, but any other suitableapproximations will work equally well.

[0056] In a first approximation, the area segment is computed as:

Area_(i)=(x _(i+1) −x _(i) , y _(i+1) −y _(i))X(u _(i) −x _(i) , v _(i)−y _(i))

[0057] where,

[0058] X is the vector cross product.

[0059] The above approximation computes the signed area of aparallelogram between line connecting a point I to a point I+1, and aline connecting a point I to a smoothed point I.

[0060] In a second approximation, the area segment is computed asfollows:

Area_(i)=(x _(i+1) −x _(i) , y _(i+1) −y _(i))X((u _(i) −x _(i) , v _(i)=y _(i))+(u _(i+1) −x _(i) , v _(i+1) −y _(i+1)))

[0061] The second approximation is the sum of the area spanned by a lineconnecting point I and I+1, and a line connecting point I to itssmoothed point, and a line connecting point I+1 to its smoothed point.$\begin{matrix}{{Area} = \quad {\sum\limits_{i = 1}^{N - 1}{Area}_{i}}} \\{= \quad {\sum\limits_{i = 1}^{N - 1}\left\lbrack {\left( {{x_{i + 1} - x_{i}},{y_{i + 1} - y_{i}}} \right) \times} \right.}} \\\left. \quad \left( {{u_{i} + u_{i + 1} - x_{i} - x_{i + 1}},{v_{i} + v_{i + 1} - y_{i} - y_{i + 1}}} \right) \right\rbrack \\{= \quad {\sum\limits_{i = 1}^{N - 1}\left\lbrack {{\left( {x_{i + 1} - x_{i}} \right) \cdot \left( {v_{i} + v_{i + 1} - y_{i} - y_{i + 1}} \right)} -} \right.}} \\\left. \quad {\left( {y_{i + 1} - y_{i}} \right) \cdot \left( {u_{i} + u_{i + 1} - x_{i} - x_{i + 1}} \right)} \right\rbrack \\{= \quad {\sum\limits_{i = 1}^{N - 1}\left\lbrack {{v_{i} \cdot \left( {x_{i + 1} - x_{i - 1}} \right)} - {u_{i} \cdot \left( {y_{i + 1} - y_{i - 1}} \right)} +} \right.}} \\\left. \quad {{\left( {x_{i} + x_{i + 1}} \right) \cdot \left( {y_{i + 1} - y_{i}} \right)} - {\left( {x_{i + 1} - x_{i}} \right) \cdot \left( {y_{1} + y_{i + 1}} \right)}} \right\rbrack \\{= \quad {{\sum\limits_{i = 1}^{N - 1}\left\lbrack {{v_{i} \cdot l_{i}} + {u_{i} \cdot m_{i}}} \right\rbrack} + M}} \\{\equiv \quad P}\end{matrix}$ ${where},\begin{matrix}{l_{i} = \quad {x_{i + 1} - x_{i - 1}}} \\{m_{i} = \quad {y_{i - 1} - y_{i + 1}}} \\{M = \quad {\sum\limits_{i = 1}^{N - 1}{\left\lbrack {{\left( {x_{i} + x_{i + 1}} \right) \cdot \left( {y_{i + 1} - y_{i}} \right)} - {\left( {x_{i + 1} - x_{i}} \right) \cdot \left( {y_{i} + y_{i + 1}} \right)}} \right\rbrack.}}}\end{matrix}$

[0062] The energy function then becomes: $\begin{matrix}{E = \quad {D + {\lambda^{2}*S} + {Y^{2}*B}}} \\{= \quad {{\sum\limits_{i = 0}^{N - 1}\left\lbrack {\left( {u_{i} - x_{i}} \right)^{2} + \left( {v_{i} - y_{i}} \right)^{2} + {\lambda^{2}\sqrt{\left( {u_{i + 1} - u_{i}} \right)^{2} + \left( {v_{i + 1} - v_{i}} \right)^{2}}}} \right\rbrack} +}} \\{\quad {Y^{2}\left\lbrack {{\sum\limits_{i = 1}^{N - 1}\left( {{v_{i} \cdot l_{i}} + {u_{i} \cdot m_{i}}} \right)} + M} \right\rbrack}^{2}}\end{matrix}$

[0063] Thus, the process 200 defines the way to compute the new curvewhere the energy function E contains three terms:

[0064] 1. Closeness of the resulting curve to the data curve;

[0065] 2. Smoothness of the resulting curve; and

[0066] 3. Constraint for a systematic shift.

[0067] The smoothed curve 121 is obtained by minimizing this energyfunction.

[0068] The parameter γ is assigned large values (and thus prevents theshrinking from happening), when there is a systematic shift. When thenew constraint is introduced and the new established cure is recovered,the constraint ensures that no systematic shift can occur. For a givencurve and its smoothed version, if the measure “enclosed area” betweenthe two curves is large then it implies that the systematic shift hasoccurred.

[0069] The process 200 ensures that the reconstructed curve 121 isdistributed evenly around the original curve 100. In process 200, thearea covered between the data points 160 and 164 and the reconstructedpoint 162 and 166 is examined. The area is defined on one side to bepositive and other side to be negative. The constrain requires thattotal area between these two curves on one side be equal to the totalarea between these two curves on the other side. For the enclosed areato be small, the smoothed curve should lie on both sides of the data ordistributed around the given curve 100 (some points on one side andother on the other side). If the smoothed curve 121 lies only on oneside, then the systematic shift has occurred. Restated, the area coveredbetween the two curves (the original noisy curve 100 and the smoothedcurve 121) should be small or ideally zero.

[0070] In step 208, a smoothing function with an energy value E isgenerated which is representative of the transposed curve. As E is acomposite of various factors, it can be written as:

E=D+λ ² *S+γ ² *B.

[0071] One embodiment of E can be expressed as: $\begin{matrix}{E = \quad {{\sum\limits_{i = 0}^{N - 1}\left\lbrack {\left( {u_{i} - x_{i}} \right)^{2} + \left( {v_{i} - y_{i}} \right)^{2} + {\lambda^{2}\sqrt{\left( {u_{i + 1} - u_{i}} \right)^{2} + \left( {v_{i + 1} - v_{i}} \right)^{2}}}} \right\rbrack} +}} \\{\quad {Y^{2}\left\lbrack {{\sum\limits_{i = 1}^{N - 1}\left( {{v_{i} \cdot l_{i}} + {u_{i} \cdot m_{i}}} \right)} - M} \right\rbrack}^{2}}\end{matrix}$

[0072] Other suitable combinations using D and S may be used as well.

[0073] Next, in step 210, the smoothed curve is obtained by solving the2N−2 equations representing the first partial derivative of E withrespect to the u,v coordinates of point I, as follows:$\frac{\partial E}{\partial u_{i}} = 0$$\frac{\partial E}{\partial v_{i}} = 0$${where},{\frac{\partial E}{\partial u_{i}} = {{\left( {u_{i} - x_{i}} \right) + \frac{\lambda^{2}\left( {u_{i} - u_{i + 1}} \right)}{d\left( {O_{i},O_{i + 1}} \right)} + \frac{\lambda^{2}\left( {u_{i} - u_{i - 1}} \right)}{d\left( {O_{i},O_{i - 1}} \right)} + {Y^{2}{P \cdot m_{i}}}} = 0}}$$\frac{\partial E}{\partial v_{i}} = {{\left( {v_{i} - y_{i}} \right) + \frac{\lambda^{2}\left( {v_{i} - v_{i + 1}} \right)}{d\left( {O_{i},O_{i + 1}} \right)} + \frac{\lambda^{2}\left( {v_{i} - v_{i - 1}} \right)}{d\left( {O_{i},O_{i - 1}} \right)} + {Y^{2}{P \cdot l_{i}}}} = 0}$

[0074] Here,

[0075] O_(i)=point located on transposed curve at (u₁, v₁); and

[0076] d is the distance between point P located at (x, y) and point Qlocated at (x′, y′), defined as:${d\left( {P,Q} \right)} = \sqrt{\left( {x - x^{\prime}} \right)^{2} + \left( {y - y^{\prime}} \right)^{2}}$

[0077] The solution of the series of equations can be solved using anumber of techniques known to those skilled in the art. For example, thesolution may be generated using gradient descent methods as follows:$u_{i}^{k + 1} = {{u_{i}^{k} -} \in \left( \frac{\partial E}{\partial u_{i}} \right)}$$v_{i}^{k + 1} = {{v_{i}^{k} -} \in \left( \frac{\partial E}{\partial v_{i}} \right)}$

[0078] where,

[0079] ε is a constant whose value may be based on a second derivativeof E, and;

[0080] k is an iteration counter such that the next u and v values aregenerated based in part on the current values of u and v.

[0081] The above numerical methods iteratively solve for the transposedcurve with the lowest energy value E. Such transposed curve is selectedas the smoothed curve. Based on the smoothing function associated withthe smoothed curve and the points on the drawn curve, the points of thesmooth curve are generated. In this manner, the process 200 smooths thedrawn curve 100 without affecting the overall shape of the intendedcurve. Further, the process 200 smooths the drawn curve 100 withoutshrinking the actual curve radius.

[0082] Although two exemplary approximations for the enclosed area arediscussed, any other approximations may be used. Moreover, the inventionmay be implemented in digital hardware or computer software, or acombination of both. Preferably, the invention is implemented in acomputer program executing in a computer system. Such a computer systemmay include a processor, a data storage system, at least one inputdevice, and an output device. FIG. 5 illustrates one such computersystem 600, including a processor (CPU) 610, a RAM 620, a ROM 622 and anI/O controller 630 coupled by a CPU bus 698. The I/O controller 630 isalso coupled by an I/O bus 650 to input devices such as a keyboard 660,a mouse 670, and output devices such as a monitor 680. Additionally, oneor more data storage devices 692 is connected to the I/O bus via an I/Ointerface 690.

[0083] Further, variations to the basic computer system of FIG. 4 arewithin the scope of the present invention. For example, instead of usinga mouse as the input devices, and a pressure-sensitive pen or tablet maybe used to generate the curve location information.

[0084] It will be apparent to those skilled in the art that variousmodifications can be made to the curve smoothing process of the instantinvention without departing from the scope and spirit of the invention,and it is intended that the present invention cover modifications andvariations of the curve smoothing process of the invention provided theycome within the scope of the appended claims and their equivalents.

What is claimed is:
 1. A computer-implemented method for generating asmoothed curve from a drawn curve, comprising: defining a function forone or more signed areas between the smoothed curve and the drawn curve;and generating the smoothed curve by applying the function as aconstraint.
 2. An apparatus for generating a smoothed curve from a drawncurve, comprising: means for defining a function for one or more signedareas between the smoothed curve and the drawn curve; and means forgenerating the smoothed curve by applying the function as a constraint.